<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1. 去重
        let arr = [1, 1, 1, 2, 2, 4, 5, 6, 5, 4, 7, 8];

        // new Set(arr)：将数组传递Set，Set会自动去重
        // [...]：将Set格式的数据，重新转换为数组
        const newArr = [...new Set(arr)];
        console.log(newArr);


        // 方法一：
        // let newArr = [];
        // for (let item of arr) {
        //     if (!newArr.includes(item)) {
        //         // 进入if，表示newArr中不包含item
        //         newArr.push(item)
        //     }
        // }
        //  console.log(newArr);
        // 方法二：
        // for (let i = 0; i < arr.length; i++) {
        //     for (let j = i + 1; j < arr.length; j++) {
        //         if (arr[i] == arr[j]) {
        //             arr.splice(j, 1);
        //             j--;
        //         }
        //     }
        // }
        // 方法三：
        // for (let i = 0; i < arr.length; i++) {
        //     if (arr.indexOf(arr[i]) !== arr.lastIndexOf(arr[i])) {
        //         // 进入if，则说明arr[i]在数组中重复出现
        //         arr.splice(i, 1);
        //         i--;
        //     }
        // }
        // console.log(arr);


        // 2. 排序（升序）
        // 选择排序：每一个数依次后它后面的所有数进行比较
        // let arr = [3, 10, 12, 5, 1, 7];
        // for (let i = 0; i < arr.length; i++) {
        //     for (let j = i + 1; j < arr.length; j++) {
        //         if(arr[i] > arr[j]) {
        //             [arr[i], arr[j]] = [arr[j], arr[i]]
        //         }
        //     }
        // }
        // console.log(arr);

        // 冒泡排序
        // arr = [4, 3, 2, 1]

        // 第一轮： 3  2  1  4;    轮数 i = 1, j < 长度 - 1
        // 第二轮： 2  1  3  4;    轮数 i = 2, j < 长度 - 2
        // 第三轮： 1  2  3  4;    轮数 i = 3, j < 长度 - 3

        // let arr = [30, 18, 50, 5, 3, 10, 12, 5, 1];
        // // 外层循环：控制总共的比较轮数
        // for (let i = 1; i < arr.length; i++) {
        //     for (let j = 0; j < arr.length - i; j++) {
        //         if (arr[j] > arr[j + 1]) {
        //             [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
        //         }
        //     }
        // }

        // console.log(arr);


        // 3. 扁平化
        // const arr = [1, 2, 3, [4, 5], 6, [1, [2, 3], 4], 8]
        // let newArr = [];
        // for (let item of arr) {
        //     // if (typeof item == 'object') {
        //     if (Array.isArray(item)) {
        //         newArr = newArr.concat(item);
        //     } else {
        //         newArr.push(item);
        //     }
        // }
        // console.log(newArr);
        // const newArr = arr.flat(Infinity)

        // console.log(newArr);




    </script>
</body>

</html>